All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] openvswitch: Add STT support.
@ 2015-01-20 20:25 Pravin B Shelar
  2015-01-20 23:06 ` Tom Herbert
  2015-01-23 16:58 ` Tom Herbert
  0 siblings, 2 replies; 25+ messages in thread
From: Pravin B Shelar @ 2015-01-20 20:25 UTC (permalink / raw)
  To: davem; +Cc: netdev, Pravin B Shelar

Following patch series adds support for Stateless Transport
Tunneling protocol.
STT uses TCP segmentation offload available in most of NIC. On
packet xmit STT driver appends STT header along with TCP header
to the packet. For GSO packet GSO parameters are set according
to tunnel configuration and packet is handed over to networking
stack. This allows use of segmentation offload available in NICs

Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
NIC with 1500 byte MTU with two TCP streams.

The protocol is documented at
http://www.ietf.org/archive/id/draft-davie-stt-06.txt

I will send out OVS userspace patch on ovs-dev mailing list.

Pravin B Shelar (3):
  skbuff: Add skb_list_linearize()
  net: Add STT tunneling protocol.
  openvswitch: Add support for STT tunneling.

 include/linux/skbuff.h           |    2 +
 include/net/stt.h                |   55 ++
 include/uapi/linux/openvswitch.h |    1 +
 net/core/skbuff.c                |   35 +
 net/ipv4/Kconfig                 |   11 +
 net/ipv4/Makefile                |    1 +
 net/ipv4/stt.c                   | 1386 ++++++++++++++++++++++++++++++++++++++
 net/openvswitch/Kconfig          |   10 +
 net/openvswitch/Makefile         |    1 +
 net/openvswitch/vport-stt.c      |  214 ++++++
 10 files changed, 1716 insertions(+)
 create mode 100644 include/net/stt.h
 create mode 100644 net/ipv4/stt.c
 create mode 100644 net/openvswitch/vport-stt.c

-- 
1.9.1

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-20 20:25 [PATCH net-next 0/3] openvswitch: Add STT support Pravin B Shelar
@ 2015-01-20 23:06 ` Tom Herbert
  2015-01-21  9:08   ` Pravin Shelar
  2015-01-23 16:58 ` Tom Herbert
  1 sibling, 1 reply; 25+ messages in thread
From: Tom Herbert @ 2015-01-20 23:06 UTC (permalink / raw)
  To: Pravin B Shelar; +Cc: David Miller, Linux Netdev List

On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
> Following patch series adds support for Stateless Transport
> Tunneling protocol.
> STT uses TCP segmentation offload available in most of NIC. On
> packet xmit STT driver appends STT header along with TCP header
> to the packet. For GSO packet GSO parameters are set according
> to tunnel configuration and packet is handed over to networking
> stack. This allows use of segmentation offload available in NICs
>
> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
> NIC with 1500 byte MTU with two TCP streams.
>
Having packets marked TCP which really aren't TCP is a rather scary
prospect to deploy in a real data center (TCP is kind of an important
protocol ;-) ). Can you give some more motivation on this, more data
that shows what the benefits are and how this compares to equivalent
encapsulation protocols that implement GRO and GSO.

Thanks,
Tom

> The protocol is documented at
> http://www.ietf.org/archive/id/draft-davie-stt-06.txt
>
> I will send out OVS userspace patch on ovs-dev mailing list.
>
> Pravin B Shelar (3):
>   skbuff: Add skb_list_linearize()
>   net: Add STT tunneling protocol.
>   openvswitch: Add support for STT tunneling.
>
>  include/linux/skbuff.h           |    2 +
>  include/net/stt.h                |   55 ++
>  include/uapi/linux/openvswitch.h |    1 +
>  net/core/skbuff.c                |   35 +
>  net/ipv4/Kconfig                 |   11 +
>  net/ipv4/Makefile                |    1 +
>  net/ipv4/stt.c                   | 1386 ++++++++++++++++++++++++++++++++++++++
>  net/openvswitch/Kconfig          |   10 +
>  net/openvswitch/Makefile         |    1 +
>  net/openvswitch/vport-stt.c      |  214 ++++++
>  10 files changed, 1716 insertions(+)
>  create mode 100644 include/net/stt.h
>  create mode 100644 net/ipv4/stt.c
>  create mode 100644 net/openvswitch/vport-stt.c
>
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-20 23:06 ` Tom Herbert
@ 2015-01-21  9:08   ` Pravin Shelar
  2015-01-21 16:51     ` Tom Herbert
  0 siblings, 1 reply; 25+ messages in thread
From: Pravin Shelar @ 2015-01-21  9:08 UTC (permalink / raw)
  To: Tom Herbert; +Cc: David Miller, Linux Netdev List

On Tue, Jan 20, 2015 at 3:06 PM, Tom Herbert <therbert@google.com> wrote:
> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>> Following patch series adds support for Stateless Transport
>> Tunneling protocol.
>> STT uses TCP segmentation offload available in most of NIC. On
>> packet xmit STT driver appends STT header along with TCP header
>> to the packet. For GSO packet GSO parameters are set according
>> to tunnel configuration and packet is handed over to networking
>> stack. This allows use of segmentation offload available in NICs
>>
>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>> NIC with 1500 byte MTU with two TCP streams.
>>
> Having packets marked TCP which really aren't TCP is a rather scary
> prospect to deploy in a real data center (TCP is kind of an important
> protocol ;-) ). Can you give some more motivation on this, more data
> that shows what the benefits are and how this compares to equivalent
> encapsulation protocols that implement GRO and GSO.
>
There are multi-year deployments of STT, So it is already in real data center.
Biggest advantage is STT does not need new NIC with tunnel offload.
Any NIC that supports TCP offload can be used to achieve better
performance.

Following are numbers you asked for.
Setup: net-next branch on server and client.
netperf: TCP unidirectional tests with 5 streams. Numbers are averaged
over 3 runs of 50 sec.

VXLAN:
CPU
  Client: 1.6
  Server: 14.2
Throughput: 5.6 Gbit/s

VXLAN with rcsum:
CPU
  Client: 0.89
  Server: 12.4
Throughput: 5.8 Gbit/s

STT:
CPU
  Client: 1.28
  Server: 4.0
Throughput: 9.5 Gbit/s

Thanks,
Pravin.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21  9:08   ` Pravin Shelar
@ 2015-01-21 16:51     ` Tom Herbert
  2015-01-21 18:30       ` Pravin Shelar
  0 siblings, 1 reply; 25+ messages in thread
From: Tom Herbert @ 2015-01-21 16:51 UTC (permalink / raw)
  To: Pravin Shelar; +Cc: David Miller, Linux Netdev List

On Wed, Jan 21, 2015 at 1:08 AM, Pravin Shelar <pshelar@nicira.com> wrote:
> On Tue, Jan 20, 2015 at 3:06 PM, Tom Herbert <therbert@google.com> wrote:
>> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>>> Following patch series adds support for Stateless Transport
>>> Tunneling protocol.
>>> STT uses TCP segmentation offload available in most of NIC. On
>>> packet xmit STT driver appends STT header along with TCP header
>>> to the packet. For GSO packet GSO parameters are set according
>>> to tunnel configuration and packet is handed over to networking
>>> stack. This allows use of segmentation offload available in NICs
>>>
>>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>>> NIC with 1500 byte MTU with two TCP streams.
>>>
>> Having packets marked TCP which really aren't TCP is a rather scary
>> prospect to deploy in a real data center (TCP is kind of an important
>> protocol ;-) ). Can you give some more motivation on this, more data
>> that shows what the benefits are and how this compares to equivalent
>> encapsulation protocols that implement GRO and GSO.
>>
> There are multi-year deployments of STT, So it is already in real data center.
> Biggest advantage is STT does not need new NIC with tunnel offload.
> Any NIC that supports TCP offload can be used to achieve better
> performance.
>
> Following are numbers you asked for.
> Setup: net-next branch on server and client.
> netperf: TCP unidirectional tests with 5 streams. Numbers are averaged
> over 3 runs of 50 sec.
>
Please provides more details on your configuration so that others
might be able to reproduce your results. Also, it would be quite
helpful if you could implement STT as a normal network interface like
VXLAN does so that we can isolate performance of the protocol. For
instance I have no problem getting line rate with VXLAN using 5
streams with or without RCO in my testing. I assume you tested with
OVS and maybe VMs which may have a significant impact beyond the
protocol changes.

Another thing to consider in your analysis is the performance with
flows using small packets. STT should demonstrate better performance
with bulk flows since LSO and LRO are better performing relative to
GSO and GRO. But for flows with small packets, I don't see how there
could be any performance advantage. We already have ways to leverage
simple UDP checksum offload with UDP encapsulations, seems like STT
might just represent unnecessary header overhead in those cases.

> VXLAN:
> CPU
>   Client: 1.6
>   Server: 14.2
> Throughput: 5.6 Gbit/s
>
> VXLAN with rcsum:
> CPU
>   Client: 0.89
>   Server: 12.4
> Throughput: 5.8 Gbit/s
>
> STT:
> CPU
>   Client: 1.28
>   Server: 4.0
> Throughput: 9.5 Gbit/s
>
9.5Gbps? Rounding error or is this 40Gbps or larger than 1500 byte MTU?

Thanks,
Tom

> Thanks,
> Pravin.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 16:51     ` Tom Herbert
@ 2015-01-21 18:30       ` Pravin Shelar
  2015-01-21 19:45         ` Tom Herbert
  0 siblings, 1 reply; 25+ messages in thread
From: Pravin Shelar @ 2015-01-21 18:30 UTC (permalink / raw)
  To: Tom Herbert; +Cc: David Miller, Linux Netdev List

On Wed, Jan 21, 2015 at 8:51 AM, Tom Herbert <therbert@google.com> wrote:
> On Wed, Jan 21, 2015 at 1:08 AM, Pravin Shelar <pshelar@nicira.com> wrote:
>> On Tue, Jan 20, 2015 at 3:06 PM, Tom Herbert <therbert@google.com> wrote:
>>> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>>>> Following patch series adds support for Stateless Transport
>>>> Tunneling protocol.
>>>> STT uses TCP segmentation offload available in most of NIC. On
>>>> packet xmit STT driver appends STT header along with TCP header
>>>> to the packet. For GSO packet GSO parameters are set according
>>>> to tunnel configuration and packet is handed over to networking
>>>> stack. This allows use of segmentation offload available in NICs
>>>>
>>>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>>>> NIC with 1500 byte MTU with two TCP streams.
>>>>
>>> Having packets marked TCP which really aren't TCP is a rather scary
>>> prospect to deploy in a real data center (TCP is kind of an important
>>> protocol ;-) ). Can you give some more motivation on this, more data
>>> that shows what the benefits are and how this compares to equivalent
>>> encapsulation protocols that implement GRO and GSO.
>>>
>> There are multi-year deployments of STT, So it is already in real data center.
>> Biggest advantage is STT does not need new NIC with tunnel offload.
>> Any NIC that supports TCP offload can be used to achieve better
>> performance.
>>
>> Following are numbers you asked for.
>> Setup: net-next branch on server and client.
>> netperf: TCP unidirectional tests with 5 streams. Numbers are averaged
>> over 3 runs of 50 sec.
>>
> Please provides more details on your configuration so that others
> might be able to reproduce your results. Also, it would be quite
> helpful if you could implement STT as a normal network interface like
> VXLAN does so that we can isolate performance of the protocol. For
> instance I have no problem getting line rate with VXLAN using 5
> streams with or without RCO in my testing. I assume you tested with
> OVS and maybe VMs which may have a significant impact beyond the
> protocol changes.
>
I used bare metal intel servers. All VXLAN tests were done using linux
kernel device without any VMs. All STT tests are done using OVS bridge
and STT port.

> Another thing to consider in your analysis is the performance with
> flows using small packets. STT should demonstrate better performance
> with bulk flows since LSO and LRO are better performing relative to
> GSO and GRO. But for flows with small packets, I don't see how there
> could be any performance advantage. We already have ways to leverage
> simple UDP checksum offload with UDP encapsulations, seems like STT
> might just represent unnecessary header overhead in those cases.
>
All tunneling protocol has performance issue with small packet, I do
not see how is it related to STT patch. STT also make use of checksum
offload, so there should not be much overhead.

>> VXLAN:
>> CPU
>>   Client: 1.6
>>   Server: 14.2
>> Throughput: 5.6 Gbit/s
>>
>> VXLAN with rcsum:
>> CPU
>>   Client: 0.89
>>   Server: 12.4
>> Throughput: 5.8 Gbit/s
>>
>> STT:
>> CPU
>>   Client: 1.28
>>   Server: 4.0
>> Throughput: 9.5 Gbit/s
>>
> 9.5Gbps? Rounding error or is this 40Gbps or larger than 1500 byte MTU?
>
Nope, its same as VXLAN setup, 10Gbps NIC with 1500MTU.

Thanks.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 18:30       ` Pravin Shelar
@ 2015-01-21 19:45         ` Tom Herbert
  2015-01-21 20:22           ` Eric Dumazet
  2015-01-21 20:35           ` Jesse Gross
  0 siblings, 2 replies; 25+ messages in thread
From: Tom Herbert @ 2015-01-21 19:45 UTC (permalink / raw)
  To: Pravin Shelar; +Cc: David Miller, Linux Netdev List

> I used bare metal intel servers. All VXLAN tests were done using linux
> kernel device without any VMs. All STT tests are done using OVS bridge
> and STT port.
>
So right off the bat you're running the baseline differently than the
target. Anyway, I cannot replicate your numbers for VXLAN, I see much
better performance and this with pretty old servers and dumb NICs. I
suspect you might not have GSO/GRO properly enabled, but instead of
trying to debug your setup, I'd rather restate my request that you
provide a network interface to STT so we can do our own fair
comparison.

>> Another thing to consider in your analysis is the performance with
>> flows using small packets. STT should demonstrate better performance
>> with bulk flows since LSO and LRO are better performing relative to
>> GSO and GRO. But for flows with small packets, I don't see how there
>> could be any performance advantage. We already have ways to leverage
>> simple UDP checksum offload with UDP encapsulations, seems like STT
>> might just represent unnecessary header overhead in those cases.
>>
> All tunneling protocol has performance issue with small packet, I do
> not see how is it related to STT patch. STT also make use of checksum
> offload, so there should not be much overhead.
>

Given the pervasiveness of these patches and the fact that this is
"modifying" the definition of TCP protocol we see on the wire, I would
like to see more effort into analyzing performance and effects of this
encapsulation. I assume that STT is intended to be used for small
packets so it seems entirely reasonable to ask what exactly the
performance effects are for that case. It's really not that hard to
run some performance numbers with comparisons (TCP_RR, TCP_STREAM,
TCP_CRR, with IPv6, etc.) and report them in the patch set
description. You can look at FOU, GUE, vxlan rco, and the checksum
patches I did for some examples.

>>> VXLAN:
>>> CPU
>>>   Client: 1.6
>>>   Server: 14.2
>>> Throughput: 5.6 Gbit/s
>>>
>>> VXLAN with rcsum:
>>> CPU
>>>   Client: 0.89
>>>   Server: 12.4
>>> Throughput: 5.8 Gbit/s
>>>
>>> STT:
>>> CPU
>>>   Client: 1.28
>>>   Server: 4.0
>>> Throughput: 9.5 Gbit/s
>>>
>> 9.5Gbps? Rounding error or is this 40Gbps or larger than 1500 byte MTU?
>>
> Nope, its same as VXLAN setup, 10Gbps NIC with 1500MTU.
>
That would exceed that theoretical maximum for TCP over 10Gbps
Ethernet. How are you measuring throughput? How many bytes of protocol
headers are in STT case?

Thanks,
Tom

> Thanks.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 19:45         ` Tom Herbert
@ 2015-01-21 20:22           ` Eric Dumazet
  2015-01-21 20:35           ` Jesse Gross
  1 sibling, 0 replies; 25+ messages in thread
From: Eric Dumazet @ 2015-01-21 20:22 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Pravin Shelar, David Miller, Linux Netdev List

On Wed, 2015-01-21 at 11:45 -0800, Tom Herbert wrote:
> > I used bare metal intel servers. All VXLAN tests were done using linux
> > kernel device without any VMs. All STT tests are done using OVS bridge
> > and STT port.
> >
> So right off the bat you're running the baseline differently than the
> target. Anyway, I cannot replicate your numbers for VXLAN, I see much
> better performance and this with pretty old servers and dumb NICs. I
> suspect you might not have GSO/GRO properly enabled, but instead of
> trying to debug your setup, I'd rather restate my request that you
> provide a network interface to STT so we can do our own fair
> comparison.

I have not read specs nor the patch, but I would expect that with a TCP
stream, you simply can coalesce as many inner segments as you want.

So you could build a single TSO packet containing 400 'messages' of 160
bytes or so.

Something that a datagram tunneling cannot really do, assuming you want
full offloading support.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 19:45         ` Tom Herbert
  2015-01-21 20:22           ` Eric Dumazet
@ 2015-01-21 20:35           ` Jesse Gross
  2015-01-21 21:54             ` Tom Herbert
  2015-02-02 16:23             ` Tom Herbert
  1 sibling, 2 replies; 25+ messages in thread
From: Jesse Gross @ 2015-01-21 20:35 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Pravin Shelar, David Miller, Linux Netdev List

On Wed, Jan 21, 2015 at 11:45 AM, Tom Herbert <therbert@google.com> wrote:
>> I used bare metal intel servers. All VXLAN tests were done using linux
>> kernel device without any VMs. All STT tests are done using OVS bridge
>> and STT port.
>>
> So right off the bat you're running the baseline differently than the
> target. Anyway, I cannot replicate your numbers for VXLAN, I see much
> better performance and this with pretty old servers and dumb NICs. I
> suspect you might not have GSO/GRO properly enabled, but instead of
> trying to debug your setup, I'd rather restate my request that you
> provide a network interface to STT so we can do our own fair
> comparison.

If I had to guess, I suspect the difference is that UDP RSS wasn't
enabled, since it doesn't come that way out of the box. Regardless,
you can clearly see a significant difference in single core
performance and CPU consumption.

STT has been fairly well known in network virtualization circles for
the past few years and has some large deployments, so the reported
performance is not a fluke. I remember Pankaj from Microsoft also
mentioning to you that they weren't able to get performance to
reasonable level without TSO. Totally different environment obviously
but same reasoning.

>>>> VXLAN:
>>>> CPU
>>>>   Client: 1.6
>>>>   Server: 14.2
>>>> Throughput: 5.6 Gbit/s
>>>>
>>>> VXLAN with rcsum:
>>>> CPU
>>>>   Client: 0.89
>>>>   Server: 12.4
>>>> Throughput: 5.8 Gbit/s
>>>>
>>>> STT:
>>>> CPU
>>>>   Client: 1.28
>>>>   Server: 4.0
>>>> Throughput: 9.5 Gbit/s
>>>>
>>> 9.5Gbps? Rounding error or is this 40Gbps or larger than 1500 byte MTU?
>>>
>> Nope, its same as VXLAN setup, 10Gbps NIC with 1500MTU.
>>
> That would exceed that theoretical maximum for TCP over 10Gbps
> Ethernet. How are you measuring throughput? How many bytes of protocol
> headers are in STT case?

For large packet cases, STT actually has less header overhead compared
to the unencapsulated traffic stream. This is because for a group of
STT packets generated by a TSO burst from the guest there is only a
single copy of the inner header. Even though TCP headers are used for
encapsulation, there are no options - as opposed to the inner headers,
which typically contain timestamps. Over the course of the ~45 packets
that could be generated from a maximum sized transmission, this
results in negative encapsulation overhead.

I would recommend you take a look at the draft if you haven't already:
http://tools.ietf.org/html/draft-davie-stt-06

It is currently in the final stages of the RFC publication process.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 20:35           ` Jesse Gross
@ 2015-01-21 21:54             ` Tom Herbert
  2015-01-21 22:14               ` Jesse Gross
  2015-02-02 16:23             ` Tom Herbert
  1 sibling, 1 reply; 25+ messages in thread
From: Tom Herbert @ 2015-01-21 21:54 UTC (permalink / raw)
  To: Jesse Gross; +Cc: Pravin Shelar, David Miller, Linux Netdev List

On Wed, Jan 21, 2015 at 12:35 PM, Jesse Gross <jesse@nicira.com> wrote:
> On Wed, Jan 21, 2015 at 11:45 AM, Tom Herbert <therbert@google.com> wrote:
>>> I used bare metal intel servers. All VXLAN tests were done using linux
>>> kernel device without any VMs. All STT tests are done using OVS bridge
>>> and STT port.
>>>
>> So right off the bat you're running the baseline differently than the
>> target. Anyway, I cannot replicate your numbers for VXLAN, I see much
>> better performance and this with pretty old servers and dumb NICs. I
>> suspect you might not have GSO/GRO properly enabled, but instead of
>> trying to debug your setup, I'd rather restate my request that you
>> provide a network interface to STT so we can do our own fair
>> comparison.
>
> If I had to guess, I suspect the difference is that UDP RSS wasn't
> enabled, since it doesn't come that way out of the box. Regardless,
> you can clearly see a significant difference in single core
> performance and CPU consumption.
>
I'm not going to try to draw conclusions from data which is obviously
biased and incomplete. If you want to move forward on this, then just
provide network interface for STT so we can independently run our own
comparisons against other encapsulations like we've been doing all
along.

> STT has been fairly well known in network virtualization circles for
> the past few years and has some large deployments, so the reported
> performance is not a fluke. I remember Pankaj from Microsoft also
> mentioning to you that they weren't able to get performance to
> reasonable level without TSO. Totally different environment obviously
> but same reasoning.
>
>>>>> VXLAN:
>>>>> CPU
>>>>>   Client: 1.6
>>>>>   Server: 14.2
>>>>> Throughput: 5.6 Gbit/s
>>>>>
>>>>> VXLAN with rcsum:
>>>>> CPU
>>>>>   Client: 0.89
>>>>>   Server: 12.4
>>>>> Throughput: 5.8 Gbit/s
>>>>>
>>>>> STT:
>>>>> CPU
>>>>>   Client: 1.28
>>>>>   Server: 4.0
>>>>> Throughput: 9.5 Gbit/s
>>>>>
>>>> 9.5Gbps? Rounding error or is this 40Gbps or larger than 1500 byte MTU?
>>>>
>>> Nope, its same as VXLAN setup, 10Gbps NIC with 1500MTU.
>>>
>> That would exceed that theoretical maximum for TCP over 10Gbps
>> Ethernet. How are you measuring throughput? How many bytes of protocol
>> headers are in STT case?
>
> For large packet cases, STT actually has less header overhead compared
> to the unencapsulated traffic stream. This is because for a group of
> STT packets generated by a TSO burst from the guest there is only a
> single copy of the inner header. Even though TCP headers are used for
> encapsulation, there are no options - as opposed to the inner headers,
> which typically contain timestamps. Over the course of the ~45 packets
> that could be generated from a maximum sized transmission, this
> results in negative encapsulation overhead.
>
> I would recommend you take a look at the draft if you haven't already:
> http://tools.ietf.org/html/draft-davie-stt-06
>
> It is currently in the final stages of the RFC publication process.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 21:54             ` Tom Herbert
@ 2015-01-21 22:14               ` Jesse Gross
  2015-01-21 23:46                 ` Vincent JARDIN
  0 siblings, 1 reply; 25+ messages in thread
From: Jesse Gross @ 2015-01-21 22:14 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Pravin Shelar, David Miller, Linux Netdev List

On Wed, Jan 21, 2015 at 1:54 PM, Tom Herbert <therbert@google.com> wrote:
> On Wed, Jan 21, 2015 at 12:35 PM, Jesse Gross <jesse@nicira.com> wrote:
>> On Wed, Jan 21, 2015 at 11:45 AM, Tom Herbert <therbert@google.com> wrote:
>>>> I used bare metal intel servers. All VXLAN tests were done using linux
>>>> kernel device without any VMs. All STT tests are done using OVS bridge
>>>> and STT port.
>>>>
>>> So right off the bat you're running the baseline differently than the
>>> target. Anyway, I cannot replicate your numbers for VXLAN, I see much
>>> better performance and this with pretty old servers and dumb NICs. I
>>> suspect you might not have GSO/GRO properly enabled, but instead of
>>> trying to debug your setup, I'd rather restate my request that you
>>> provide a network interface to STT so we can do our own fair
>>> comparison.
>>
>> If I had to guess, I suspect the difference is that UDP RSS wasn't
>> enabled, since it doesn't come that way out of the box. Regardless,
>> you can clearly see a significant difference in single core
>> performance and CPU consumption.
>>
> I'm not going to try to draw conclusions from data which is obviously
> biased and incomplete. If you want to move forward on this, then just
> provide network interface for STT so we can independently run our own
> comparisons against other encapsulations like we've been doing all
> along.

You have the source code, so you are totally free to run whatever
tests you like to draw your own conclusions. Personally, I find a more
than doubling of performance in the environments that I have seen
compelling. Your mileage may vary.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 22:14               ` Jesse Gross
@ 2015-01-21 23:46                 ` Vincent JARDIN
  2015-01-22 16:24                   ` Tom Herbert
  0 siblings, 1 reply; 25+ messages in thread
From: Vincent JARDIN @ 2015-01-21 23:46 UTC (permalink / raw)
  To: Jesse Gross, Tom Herbert; +Cc: Pravin Shelar, David Miller, Linux Netdev List

Jesse, Tom,

On 21/01/2015 23:14, Jesse Gross wrote:
>> I'm not going to try to draw conclusions from data which is obviously
>> >biased and incomplete. If you want to move forward on this, then just
>> >provide network interface for STT so we can independently run our own
>> >comparisons against other encapsulations like we've been doing all
>> >along.
> You have the source code, so you are totally free to run whatever
> tests you like to draw your own conclusions. Personally, I find a more
> than doubling of performance in the environments that I have seen
> compelling. Your mileage may vary.

+1 for STT in the kernel:
   - whatever the performances, it is needed because it happened to be 
used. If the patch can be optimized, someone will do and provide the 
related patches. The patch from Pravin is ok but...

   - ...I agree with Tom, a netdevice is a must have to ack't this 
patch. Such feature should not be added into openvswitch without its 
counter-part netdevice.

thank you,
   Vincent

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 23:46                 ` Vincent JARDIN
@ 2015-01-22 16:24                   ` Tom Herbert
  2015-01-22 17:51                     ` Vincent JARDIN
  2015-01-23  9:00                     ` David Miller
  0 siblings, 2 replies; 25+ messages in thread
From: Tom Herbert @ 2015-01-22 16:24 UTC (permalink / raw)
  To: Vincent JARDIN
  Cc: Jesse Gross, Pravin Shelar, David Miller, Linux Netdev List

On Wed, Jan 21, 2015 at 3:46 PM, Vincent JARDIN
<vincent.jardin@6wind.com> wrote:
> Jesse, Tom,
>
> On 21/01/2015 23:14, Jesse Gross wrote:
>>>
>>> I'm not going to try to draw conclusions from data which is obviously
>>> >biased and incomplete. If you want to move forward on this, then just
>>> >provide network interface for STT so we can independently run our own
>>> >comparisons against other encapsulations like we've been doing all
>>> >along.
>>
>> You have the source code, so you are totally free to run whatever
>> tests you like to draw your own conclusions. Personally, I find a more
>> than doubling of performance in the environments that I have seen
>> compelling. Your mileage may vary.
>
>
> +1 for STT in the kernel:
>   - whatever the performances, it is needed because it happened to be used.

Vincent, it's not that simple. This is not just another case of an
encapsulation protocol that we can easily ignore and filter because it
hides behind a UDP port or even a new protocol number. This is adding
a new definition to *the* most critical protocol on the planet. I
don't see how this anyone can claim this doesn't violate a whole bunch
of long standing RFCs and break a whole bunch of baked in assumptions
we make about TCP (IP protocol number 6).

For example, TCP MUST have congestion avoidance as per RFC2581:

"The slow start and congestion avoidance algorithms MUST be used by a
TCP sender to control the amount of outstanding data being injected
into the network."

But from STT draft:

"STT segments are transmitted as IP datagrams using the TCP protocol
number (6)."-- that makes this a TCP sender.

"STT does not provide any sort of congestion control."-- that puts STT
in clear violation of RFC2581.

Congestion avoidance for TCP is not just a nice to have, it's not
optional, it's not just best effort like UDP is. There is no provision
for reusing the TCP protocol number and claiming to be exempt from
standards compliance because it's now a different protocol. We build
whole data centers around these principles, and in fact the very
operation of the Internet depends on them. For instance, if we allow
this into the kernel and this becomes available on billions of
devices, what assurances do we have that people won't start abusing
this because they find congestion avoidance annoying and this a
convenient way to bypass it?

STT is undoubtedly a creative and unique solution I'll give you that,
but the potential repercussions of allowing this to be widely deployed
are profound. IMO this needs to be fully explored before it can ever
be allowed in the kernel. If there has already been discussion on this
please forward a pointer (I didn't find anything in the IETF mailing
list archives other than the draft posting announcements), but at the
minimum these patches warrant a lot of scrutiny.

Thanks,
Tom

> If the patch can be optimized, someone will do and provide the related
> patches. The patch from Pravin is ok but...
>
>   - ...I agree with Tom, a netdevice is a must have to ack't this patch.
> Such feature should not be added into openvswitch without its counter-part
> netdevice.
>
> thank you,
>   Vincent

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-22 16:24                   ` Tom Herbert
@ 2015-01-22 17:51                     ` Vincent JARDIN
  2015-01-23  9:04                       ` David Miller
  2015-01-23  9:00                     ` David Miller
  1 sibling, 1 reply; 25+ messages in thread
From: Vincent JARDIN @ 2015-01-22 17:51 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Jesse Gross, Pravin Shelar, David Miller, Linux Netdev List

On 22/01/2015 17:24, Tom Herbert wrote:
> STT is undoubtedly a creative and unique solution I'll give you that,
> but the potential repercussions of allowing this to be widely deployed
> are profound. IMO this needs to be fully explored before it can ever
> be allowed in the kernel. If there has already been discussion on this
> please forward a pointer (I didn't find anything in the IETF mailing
> list archives other than the draft posting announcements), but at the
> minimum these patches warrant a lot of scrutiny.

I share this concern of biased use of TCP, all the critics will be 
valid. But anyone can hack TCP (so peer to peer software does or CDN 
software does). So, I prefer the let the freedom to the sysadmin to 
enable/disable it for their networks. Not having this feature into the 
kernel prevent sysadmin from doing it. To be safe, it can be an 
experimental feature of the Linux kernel.

Same: LRO/GRO is is bad features: it breaks many times networking (most 
IP forwarders must disable it), but it helps for servers. Same for STT 
in fact, it has its narrow set of use-cases which are valid.

Best regards,
   Vincent

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-22 16:24                   ` Tom Herbert
  2015-01-22 17:51                     ` Vincent JARDIN
@ 2015-01-23  9:00                     ` David Miller
  1 sibling, 0 replies; 25+ messages in thread
From: David Miller @ 2015-01-23  9:00 UTC (permalink / raw)
  To: therbert; +Cc: vincent.jardin, jesse, pshelar, netdev

From: Tom Herbert <therbert@google.com>
Date: Thu, 22 Jan 2015 08:24:15 -0800

> STT is undoubtedly a creative and unique solution I'll give you that,
> but the potential repercussions of allowing this to be widely deployed
> are profound. IMO this needs to be fully explored before it can ever
> be allowed in the kernel. If there has already been discussion on this
> please forward a pointer (I didn't find anything in the IETF mailing
> list archives other than the draft posting announcements), but at the
> minimum these patches warrant a lot of scrutiny.

+1

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-22 17:51                     ` Vincent JARDIN
@ 2015-01-23  9:04                       ` David Miller
  0 siblings, 0 replies; 25+ messages in thread
From: David Miller @ 2015-01-23  9:04 UTC (permalink / raw)
  To: vincent.jardin; +Cc: therbert, jesse, pshelar, netdev

From: Vincent JARDIN <vincent.jardin@6wind.com>
Date: Thu, 22 Jan 2015 18:51:55 +0100

> Same: LRO/GRO is is bad features: it breaks many times networking
> (most IP forwarders must disable it), but it helps for servers. Same
> for STT in fact, it has its narrow set of use-cases which are valid.

False, GRO helps for forwarders too, because it decreases the number
of IP route lookups, one of the most expensive operations during
formwarding.

Please do not spread misinformation, and especially do not try to show
that GRO is in _ANY_ way something like STT.  That's completely wrong.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-20 20:25 [PATCH net-next 0/3] openvswitch: Add STT support Pravin B Shelar
  2015-01-20 23:06 ` Tom Herbert
@ 2015-01-23 16:58 ` Tom Herbert
  2015-01-23 17:38   ` Jesse Gross
  1 sibling, 1 reply; 25+ messages in thread
From: Tom Herbert @ 2015-01-23 16:58 UTC (permalink / raw)
  To: Pravin B Shelar; +Cc: David Miller, Linux Netdev List

On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
> Following patch series adds support for Stateless Transport
> Tunneling protocol.
> STT uses TCP segmentation offload available in most of NIC. On
> packet xmit STT driver appends STT header along with TCP header
> to the packet. For GSO packet GSO parameters are set according
> to tunnel configuration and packet is handed over to networking
> stack. This allows use of segmentation offload available in NICs
>
> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
> NIC with 1500 byte MTU with two TCP streams.
>
The reason you're able to get 9.4 Gbit/s with an L2 encapsulation
using STT is that it has less protocol overhead per packet when doing
segmentation compared to VXLAN (without segmentation STT packets will
have more overhead than VXLAN).

A VXLAN packet with TCP/IP has headers
IP|UDP|VXLAN|Ethernet|IP|TCP+options. Assuming TCP is stuffed with
options, this is 20+8+8+16+20+40=112 bytes, or 7.4% MTU. Each STT
segment created in GSO, other than the first, has just IP|TCP headers
which is 20+20=40 bytes or 2.6% MTU. So this explains throughput
differences between VXLAN and STT.

With some clever coding, this same effect can be achieved using a UDP
encapsulation protocol that allows options. Suppose we create a new
option that we'll call Remote Segmentation Offload (RSO). The option
contains sequence number, fragment number that is coming from TCP
header in STT. We'll give this option eight bytes, and we'll also need
Remote Checksum Offload (therefore UDP checksum enabled). The headers
for each segment (except first) in GUE would then be something like
IP|UDP|GUE+options, with overhead  20+8+4+16 bytes=48 bytes, or 3.2%
MTU.

Like STT, RSO requires reassembly. Most of this can probably be done
in GRO. Processing is also a little cheaper since we don't need to
walk down as many protocol layers.

Conceptually, in the presence of packet loss we can recover any
segments as long as the first one in the chain that contains the full
set of headers isn't lost. If the first one is lost, then everything
in that block is lost since there's not enough context for reassembly
(I suspect this is also true in STT).

Tom

> The protocol is documented at
> http://www.ietf.org/archive/id/draft-davie-stt-06.txt
>
> I will send out OVS userspace patch on ovs-dev mailing list.
>
> Pravin B Shelar (3):
>   skbuff: Add skb_list_linearize()
>   net: Add STT tunneling protocol.
>   openvswitch: Add support for STT tunneling.
>
>  include/linux/skbuff.h           |    2 +
>  include/net/stt.h                |   55 ++
>  include/uapi/linux/openvswitch.h |    1 +
>  net/core/skbuff.c                |   35 +
>  net/ipv4/Kconfig                 |   11 +
>  net/ipv4/Makefile                |    1 +
>  net/ipv4/stt.c                   | 1386 ++++++++++++++++++++++++++++++++++++++
>  net/openvswitch/Kconfig          |   10 +
>  net/openvswitch/Makefile         |    1 +
>  net/openvswitch/vport-stt.c      |  214 ++++++
>  10 files changed, 1716 insertions(+)
>  create mode 100644 include/net/stt.h
>  create mode 100644 net/ipv4/stt.c
>  create mode 100644 net/openvswitch/vport-stt.c
>
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-23 16:58 ` Tom Herbert
@ 2015-01-23 17:38   ` Jesse Gross
  2015-01-23 18:25     ` Tom Herbert
  0 siblings, 1 reply; 25+ messages in thread
From: Jesse Gross @ 2015-01-23 17:38 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Pravin B Shelar, David Miller, Linux Netdev List

On Fri, Jan 23, 2015 at 8:58 AM, Tom Herbert <therbert@google.com> wrote:
> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>> Following patch series adds support for Stateless Transport
>> Tunneling protocol.
>> STT uses TCP segmentation offload available in most of NIC. On
>> packet xmit STT driver appends STT header along with TCP header
>> to the packet. For GSO packet GSO parameters are set according
>> to tunnel configuration and packet is handed over to networking
>> stack. This allows use of segmentation offload available in NICs
>>
>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>> NIC with 1500 byte MTU with two TCP streams.
>>
> The reason you're able to get 9.4 Gbit/s with an L2 encapsulation
> using STT is that it has less protocol overhead per packet when doing
> segmentation compared to VXLAN (without segmentation STT packets will
> have more overhead than VXLAN).
>
> A VXLAN packet with TCP/IP has headers
> IP|UDP|VXLAN|Ethernet|IP|TCP+options. Assuming TCP is stuffed with
> options, this is 20+8+8+16+20+40=112 bytes, or 7.4% MTU. Each STT
> segment created in GSO, other than the first, has just IP|TCP headers
> which is 20+20=40 bytes or 2.6% MTU. So this explains throughput
> differences between VXLAN and STT.

Tom, what performance do you see with a single stream of VXLAN running
on net-next with default configuration? The difference in numbers
being posted here is greater than a few percent caused by protocol
overheard.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-23 17:38   ` Jesse Gross
@ 2015-01-23 18:25     ` Tom Herbert
  2015-01-23 20:20       ` Jesse Gross
  0 siblings, 1 reply; 25+ messages in thread
From: Tom Herbert @ 2015-01-23 18:25 UTC (permalink / raw)
  To: Jesse Gross; +Cc: Pravin B Shelar, David Miller, Linux Netdev List

On Fri, Jan 23, 2015 at 9:38 AM, Jesse Gross <jesse@nicira.com> wrote:
> On Fri, Jan 23, 2015 at 8:58 AM, Tom Herbert <therbert@google.com> wrote:
>> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>>> Following patch series adds support for Stateless Transport
>>> Tunneling protocol.
>>> STT uses TCP segmentation offload available in most of NIC. On
>>> packet xmit STT driver appends STT header along with TCP header
>>> to the packet. For GSO packet GSO parameters are set according
>>> to tunnel configuration and packet is handed over to networking
>>> stack. This allows use of segmentation offload available in NICs
>>>
>>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>>> NIC with 1500 byte MTU with two TCP streams.
>>>
>> The reason you're able to get 9.4 Gbit/s with an L2 encapsulation
>> using STT is that it has less protocol overhead per packet when doing
>> segmentation compared to VXLAN (without segmentation STT packets will
>> have more overhead than VXLAN).
>>
>> A VXLAN packet with TCP/IP has headers
>> IP|UDP|VXLAN|Ethernet|IP|TCP+options. Assuming TCP is stuffed with
>> options, this is 20+8+8+16+20+40=112 bytes, or 7.4% MTU. Each STT
>> segment created in GSO, other than the first, has just IP|TCP headers
>> which is 20+20=40 bytes or 2.6% MTU. So this explains throughput
>> differences between VXLAN and STT.
>
> Tom, what performance do you see with a single stream of VXLAN running
> on net-next with default configuration? The difference in numbers
> being posted here is greater than a few percent caused by protocol
> overheard.

Please look at the data I posted with the VXLAN RCO patches.

TCP/IP 10Gbps with 1500 byte MTU, 14 bytes for Ethernet header, 15
bytes for preamble, FCS, IPG, and no TCP options gives 9.54Gbps
maximum throughput. About what you see in STT minus overhead in first
segment.

TCP/IPv4 on VXLAN with TCP options gives max throughout 9.09Gbps,
TCP/IPv6 over VXLAN then gives 8.96Gbps. Pretty much what we see give
or take a few bytes for TCP options and rounding error.

Tom

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-23 18:25     ` Tom Herbert
@ 2015-01-23 20:20       ` Jesse Gross
  2015-01-23 20:57         ` Tom Herbert
  2015-02-02 16:15         ` Tom Herbert
  0 siblings, 2 replies; 25+ messages in thread
From: Jesse Gross @ 2015-01-23 20:20 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Pravin B Shelar, David Miller, Linux Netdev List

On Fri, Jan 23, 2015 at 10:25 AM, Tom Herbert <therbert@google.com> wrote:
> On Fri, Jan 23, 2015 at 9:38 AM, Jesse Gross <jesse@nicira.com> wrote:
>> On Fri, Jan 23, 2015 at 8:58 AM, Tom Herbert <therbert@google.com> wrote:
>>> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>>>> Following patch series adds support for Stateless Transport
>>>> Tunneling protocol.
>>>> STT uses TCP segmentation offload available in most of NIC. On
>>>> packet xmit STT driver appends STT header along with TCP header
>>>> to the packet. For GSO packet GSO parameters are set according
>>>> to tunnel configuration and packet is handed over to networking
>>>> stack. This allows use of segmentation offload available in NICs
>>>>
>>>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>>>> NIC with 1500 byte MTU with two TCP streams.
>>>>
>>> The reason you're able to get 9.4 Gbit/s with an L2 encapsulation
>>> using STT is that it has less protocol overhead per packet when doing
>>> segmentation compared to VXLAN (without segmentation STT packets will
>>> have more overhead than VXLAN).
>>>
>>> A VXLAN packet with TCP/IP has headers
>>> IP|UDP|VXLAN|Ethernet|IP|TCP+options. Assuming TCP is stuffed with
>>> options, this is 20+8+8+16+20+40=112 bytes, or 7.4% MTU. Each STT
>>> segment created in GSO, other than the first, has just IP|TCP headers
>>> which is 20+20=40 bytes or 2.6% MTU. So this explains throughput
>>> differences between VXLAN and STT.
>>
>> Tom, what performance do you see with a single stream of VXLAN running
>> on net-next with default configuration? The difference in numbers
>> being posted here is greater than a few percent caused by protocol
>> overheard.
>
> Please look at the data I posted with the VXLAN RCO patches.

The data you posted uses 200 streams, so I assume that you are using
multiple CPUs. It's not surprising that you would be able to consume a
10G link in that case. STT can do this with a single stream and less
than 1 core (or alternately handle higher throughput). Claiming that
since both can hit 10G they are same is not accurate.

Discussing performance like this seems a little silly given that the
code is available. Pravin posted some numbers that he got, if you want
to dispute them then why don't you just try running it?

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-23 20:20       ` Jesse Gross
@ 2015-01-23 20:57         ` Tom Herbert
  2015-01-23 21:11           ` Pravin Shelar
  2015-02-02 16:15         ` Tom Herbert
  1 sibling, 1 reply; 25+ messages in thread
From: Tom Herbert @ 2015-01-23 20:57 UTC (permalink / raw)
  To: Jesse Gross; +Cc: Pravin B Shelar, David Miller, Linux Netdev List

On Fri, Jan 23, 2015 at 12:20 PM, Jesse Gross <jesse@nicira.com> wrote:
> On Fri, Jan 23, 2015 at 10:25 AM, Tom Herbert <therbert@google.com> wrote:
>> On Fri, Jan 23, 2015 at 9:38 AM, Jesse Gross <jesse@nicira.com> wrote:
>>> On Fri, Jan 23, 2015 at 8:58 AM, Tom Herbert <therbert@google.com> wrote:
>>>> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>>>>> Following patch series adds support for Stateless Transport
>>>>> Tunneling protocol.
>>>>> STT uses TCP segmentation offload available in most of NIC. On
>>>>> packet xmit STT driver appends STT header along with TCP header
>>>>> to the packet. For GSO packet GSO parameters are set according
>>>>> to tunnel configuration and packet is handed over to networking
>>>>> stack. This allows use of segmentation offload available in NICs
>>>>>
>>>>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>>>>> NIC with 1500 byte MTU with two TCP streams.
>>>>>
>>>> The reason you're able to get 9.4 Gbit/s with an L2 encapsulation
>>>> using STT is that it has less protocol overhead per packet when doing
>>>> segmentation compared to VXLAN (without segmentation STT packets will
>>>> have more overhead than VXLAN).
>>>>
>>>> A VXLAN packet with TCP/IP has headers
>>>> IP|UDP|VXLAN|Ethernet|IP|TCP+options. Assuming TCP is stuffed with
>>>> options, this is 20+8+8+16+20+40=112 bytes, or 7.4% MTU. Each STT
>>>> segment created in GSO, other than the first, has just IP|TCP headers
>>>> which is 20+20=40 bytes or 2.6% MTU. So this explains throughput
>>>> differences between VXLAN and STT.
>>>
>>> Tom, what performance do you see with a single stream of VXLAN running
>>> on net-next with default configuration? The difference in numbers
>>> being posted here is greater than a few percent caused by protocol
>>> overheard.
>>
>> Please look at the data I posted with the VXLAN RCO patches.
>
> The data you posted uses 200 streams, so I assume that you are using
> multiple CPUs. It's not surprising that you would be able to consume a
> 10G link in that case. STT can do this with a single stream and less
> than 1 core (or alternately handle higher throughput). Claiming that
> since both can hit 10G they are same is not accurate.
>
> Discussing performance like this seems a little silly given that the
> code is available. Pravin posted some numbers that he got, if you want
> to dispute them then why don't you just try running it?

Because you haven't provided network interface like I already
requested twice, and I really don't have time or motivation to do
development on your patches or figure out how to do this with OVS. If
you want me to test your patches re-spin them with a network interface
included.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-23 20:57         ` Tom Herbert
@ 2015-01-23 21:11           ` Pravin Shelar
  0 siblings, 0 replies; 25+ messages in thread
From: Pravin Shelar @ 2015-01-23 21:11 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Jesse Gross, David Miller, Linux Netdev List

On Fri, Jan 23, 2015 at 12:57 PM, Tom Herbert <therbert@google.com> wrote:
> On Fri, Jan 23, 2015 at 12:20 PM, Jesse Gross <jesse@nicira.com> wrote:
>> On Fri, Jan 23, 2015 at 10:25 AM, Tom Herbert <therbert@google.com> wrote:
>>> On Fri, Jan 23, 2015 at 9:38 AM, Jesse Gross <jesse@nicira.com> wrote:
>>>> On Fri, Jan 23, 2015 at 8:58 AM, Tom Herbert <therbert@google.com> wrote:
>>>>> On Tue, Jan 20, 2015 at 12:25 PM, Pravin B Shelar <pshelar@nicira.com> wrote:
>>>>>> Following patch series adds support for Stateless Transport
>>>>>> Tunneling protocol.
>>>>>> STT uses TCP segmentation offload available in most of NIC. On
>>>>>> packet xmit STT driver appends STT header along with TCP header
>>>>>> to the packet. For GSO packet GSO parameters are set according
>>>>>> to tunnel configuration and packet is handed over to networking
>>>>>> stack. This allows use of segmentation offload available in NICs
>>>>>>
>>>>>> Netperf unidirectional test gives ~9.4 Gbits/s performance on 10Gbit
>>>>>> NIC with 1500 byte MTU with two TCP streams.
>>>>>>
>>>>> The reason you're able to get 9.4 Gbit/s with an L2 encapsulation
>>>>> using STT is that it has less protocol overhead per packet when doing
>>>>> segmentation compared to VXLAN (without segmentation STT packets will
>>>>> have more overhead than VXLAN).
>>>>>
>>>>> A VXLAN packet with TCP/IP has headers
>>>>> IP|UDP|VXLAN|Ethernet|IP|TCP+options. Assuming TCP is stuffed with
>>>>> options, this is 20+8+8+16+20+40=112 bytes, or 7.4% MTU. Each STT
>>>>> segment created in GSO, other than the first, has just IP|TCP headers
>>>>> which is 20+20=40 bytes or 2.6% MTU. So this explains throughput
>>>>> differences between VXLAN and STT.
>>>>
>>>> Tom, what performance do you see with a single stream of VXLAN running
>>>> on net-next with default configuration? The difference in numbers
>>>> being posted here is greater than a few percent caused by protocol
>>>> overheard.
>>>
>>> Please look at the data I posted with the VXLAN RCO patches.
>>
>> The data you posted uses 200 streams, so I assume that you are using
>> multiple CPUs. It's not surprising that you would be able to consume a
>> 10G link in that case. STT can do this with a single stream and less
>> than 1 core (or alternately handle higher throughput). Claiming that
>> since both can hit 10G they are same is not accurate.
>>
>> Discussing performance like this seems a little silly given that the
>> code is available. Pravin posted some numbers that he got, if you want
>> to dispute them then why don't you just try running it?
>
> Because you haven't provided network interface like I already
> requested twice, and I really don't have time or motivation to do
> development on your patches or figure out how to do this with OVS. If
> you want me to test your patches re-spin them with a network interface
> included.

I am woking in it. I will have patches by next week.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-23 20:20       ` Jesse Gross
  2015-01-23 20:57         ` Tom Herbert
@ 2015-02-02 16:15         ` Tom Herbert
  1 sibling, 0 replies; 25+ messages in thread
From: Tom Herbert @ 2015-02-02 16:15 UTC (permalink / raw)
  To: Jesse Gross; +Cc: Pravin B Shelar, David Miller, Linux Netdev List

Here is my data running STT and comparing against VXLAN, GUE, and
native (no encapsulation). This is using bnx2x.

TCP_STREAM IPv4 1 connection
  STT
    2.33% TX CPU utilization
    3.63% RX CPU utilization
    8790 Mbps
  GRE/GUE (RCO, GSO, GRO)
    5.55% TX CPU utilization
    6.67% RX CPU utilization
    9106 Mbps
  VXLAN (RCO, GSO, GRO)
    5.07% TX CPU utilization
    5.95% RX CPU utilization
    9061 Mbps
  Native (no ecapsulation)
    2.48% TX CPU utilization
    3.96% RX CPU utilization
    9411 Mbps

TCP_STREAM IPv4 200 connections
  STT
    8.36% TX CPU utilization
    9.29% RX CPU utilization
    9389 Mbps
  GUE/GRE (RCO, GSO, GRO)
    9.98% TX CPU utilization
    13.69% RX CPU utilization
    9132 Mbps
  VXLAN (RCO, GSO, GRO)
    11.79% TX CPU utilization
    13.88% RX CPU utilization
    9093 Mbps
  Native (no ecapsulation)
    6.05% TX CPU utilization
    7.27% RX CPU utilization
    9378 Mbps

TCP_RR IPv4 200 connections
  STT
    41.91% CPU utilization
    345/406/594 90/95/99% latencies
    562560 tps
  GUE/GRE (RCO, GSO, GRO)
    93.03% CPU utilization
    160/255/467 90/95/99% latencies
    1.1401e+06 tps
  VXLAN (RCO, GSO, GRO)
    93.73% CPU utilization
    157/249/448 90/95/99% latencies
    1.15655e+06 tps
  Native (no ecapsulation)
    87.46% CPU utilization
    120/178/292 90/95/99% latencies
    1.51747e+06 tps

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-01-21 20:35           ` Jesse Gross
  2015-01-21 21:54             ` Tom Herbert
@ 2015-02-02 16:23             ` Tom Herbert
  2015-02-02 20:39               ` Jesse Gross
  1 sibling, 1 reply; 25+ messages in thread
From: Tom Herbert @ 2015-02-02 16:23 UTC (permalink / raw)
  To: Jesse Gross; +Cc: Pravin Shelar, David Miller, Linux Netdev List

> I would recommend you take a look at the draft if you haven't already:
> http://tools.ietf.org/html/draft-davie-stt-06
>
> It is currently in the final stages of the RFC publication process.

Sorry, but this statement is completely wrong and misleading.
According to datatracker this draft has been expired since October,
there's been no discussion on it in IETF, and this has not gone to
IESG. You cannot say this is an IETF standard nor that it is about to
be published as one.  See
https://datatracker.ietf.org/doc/draft-davie-stt/ and please read the
Internet Standards process in RFC2026.

I suggest that you update the draft and post it on both nvo3 and tsvwg
so there can be some real discussion on the implications of
repurposing an IP protocol number and breaking TCP protocol standards.

Tom

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-02-02 16:23             ` Tom Herbert
@ 2015-02-02 20:39               ` Jesse Gross
  2015-02-02 22:49                 ` Tom Herbert
  0 siblings, 1 reply; 25+ messages in thread
From: Jesse Gross @ 2015-02-02 20:39 UTC (permalink / raw)
  To: Tom Herbert; +Cc: Pravin Shelar, David Miller, Linux Netdev List

On Mon, Feb 2, 2015 at 8:23 AM, Tom Herbert <therbert@google.com> wrote:
>> I would recommend you take a look at the draft if you haven't already:
>> http://tools.ietf.org/html/draft-davie-stt-06
>>
>> It is currently in the final stages of the RFC publication process.
>
> Sorry, but this statement is completely wrong and misleading.
> According to datatracker this draft has been expired since October,
> there's been no discussion on it in IETF, and this has not gone to
> IESG. You cannot say this is an IETF standard nor that it is about to
> be published as one.  See
> https://datatracker.ietf.org/doc/draft-davie-stt/ and please read the
> Internet Standards process in RFC2026.
>
> I suggest that you update the draft and post it on both nvo3 and tsvwg
> so there can be some real discussion on the implications of
> repurposing an IP protocol number and breaking TCP protocol standards.

Seriously, Tom?

It's currently in the ISE queue to be published as an RFC, which you
can see in the history in the datatracker link. I didn't say that it
was being published as a standard, I said RFC. This is the same
process and status that VXLAN has.. It also was presented in nvo3
before you started coming.

Please get your facts straight before making accusations.

^ permalink raw reply	[flat|nested] 25+ messages in thread

* Re: [PATCH net-next 0/3] openvswitch: Add STT support.
  2015-02-02 20:39               ` Jesse Gross
@ 2015-02-02 22:49                 ` Tom Herbert
  0 siblings, 0 replies; 25+ messages in thread
From: Tom Herbert @ 2015-02-02 22:49 UTC (permalink / raw)
  To: Jesse Gross; +Cc: Pravin Shelar, David Miller, Linux Netdev List

On Mon, Feb 2, 2015 at 12:39 PM, Jesse Gross <jesse@nicira.com> wrote:
> On Mon, Feb 2, 2015 at 8:23 AM, Tom Herbert <therbert@google.com> wrote:
>>> I would recommend you take a look at the draft if you haven't already:
>>> http://tools.ietf.org/html/draft-davie-stt-06
>>>
>>> It is currently in the final stages of the RFC publication process.
>>
>> Sorry, but this statement is completely wrong and misleading.
>> According to datatracker this draft has been expired since October,
>> there's been no discussion on it in IETF, and this has not gone to
>> IESG. You cannot say this is an IETF standard nor that it is about to
>> be published as one.  See
>> https://datatracker.ietf.org/doc/draft-davie-stt/ and please read the
>> Internet Standards process in RFC2026.
>>
>> I suggest that you update the draft and post it on both nvo3 and tsvwg
>> so there can be some real discussion on the implications of
>> repurposing an IP protocol number and breaking TCP protocol standards.
>
> Seriously, Tom?
>
> It's currently in the ISE queue to be published as an RFC, which you
> can see in the history in the datatracker link. I didn't say that it
> was being published as a standard, I said RFC. This is the same
> process and status that VXLAN has.. It also was presented in nvo3
> before you started coming.
>
> Please get your facts straight before making accusations.

The draft has not come up before the IESG, I have confirmed that with the ADs.

^ permalink raw reply	[flat|nested] 25+ messages in thread

end of thread, other threads:[~2015-02-02 22:49 UTC | newest]

Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-01-20 20:25 [PATCH net-next 0/3] openvswitch: Add STT support Pravin B Shelar
2015-01-20 23:06 ` Tom Herbert
2015-01-21  9:08   ` Pravin Shelar
2015-01-21 16:51     ` Tom Herbert
2015-01-21 18:30       ` Pravin Shelar
2015-01-21 19:45         ` Tom Herbert
2015-01-21 20:22           ` Eric Dumazet
2015-01-21 20:35           ` Jesse Gross
2015-01-21 21:54             ` Tom Herbert
2015-01-21 22:14               ` Jesse Gross
2015-01-21 23:46                 ` Vincent JARDIN
2015-01-22 16:24                   ` Tom Herbert
2015-01-22 17:51                     ` Vincent JARDIN
2015-01-23  9:04                       ` David Miller
2015-01-23  9:00                     ` David Miller
2015-02-02 16:23             ` Tom Herbert
2015-02-02 20:39               ` Jesse Gross
2015-02-02 22:49                 ` Tom Herbert
2015-01-23 16:58 ` Tom Herbert
2015-01-23 17:38   ` Jesse Gross
2015-01-23 18:25     ` Tom Herbert
2015-01-23 20:20       ` Jesse Gross
2015-01-23 20:57         ` Tom Herbert
2015-01-23 21:11           ` Pravin Shelar
2015-02-02 16:15         ` Tom Herbert

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.