Live data from Hacker News

Raspberry Pi Pico does line rate 100M Ethernet

github.com

31–40 of 67 posts

Re: Raspberry Pi Pico does line rate 100M Ethernet

#31
post #19
post #14

Earlier quoted context omitted.

Latency kills...and Ethernet uses exponential backoff.

More specifically TCP uses exponential backoff. Ethernet will happily keep drowning you in packages at line rate, if I'm not mistaken.

> Ethernet will happily keep drowning you in packages at line rate, if I'm not mistaken.

It's a physical layer, so yeah, of course it will.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#32
Usually I can grok the significance of almost any item on HN that catches my eye, but here I'm at a loss. Can someone explain why this matters?

As far as I can tell, someone has figured out how to send Ethernet packets at a relatively high rate using hardware with very limited CPU. Cool, but what can you _do with that_? If the RPi Pico has the juice to run interesting network _application-level traffic_ at line rate it's more intriguing, but I doubt that anyone's going to claim that can serve web traffic at line rate on this device, for example.

What am I missing?

Re: Raspberry Pi Pico does line rate 100M Ethernet

#33
“Line rate” is not “fill the link with TCP”. Line rate is “fill the link with 84 octet (including all overhead) frames.”

For 100M Ethernet this requires 148,809 packets per second.

Edit: for 1538 octet frames, one need only process 8,127 packets per second.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#34
Back in the day, in the x86 world, there was this "rule of thumb" that you needed about 1GHz of CPU speed to saturate a 1Gbit network link. So a server with four 2GHz CPUs could saturate eight 1gbit links and still be somewhat useful.

This was AFAIR based on empirical knowledge, nothing scientific.

So a Pi Pico running at 300MHz pushing 100Mbit is something that is not totally unexpected, if you consider the low-power, low-cost CPU design in a Pi Pico (and the fact that you have to push the bits manually on the wire).

It's still a nice feat that they pulled this off!

Re: Raspberry Pi Pico does line rate 100M Ethernet

#35
post #33

“Line rate” is not “fill the link with TCP”. Line rate is “fill the link with 84 octet (including all overhead) frames.” For 100M Ethernet this requires 148,809 packets per second. Edit: for 1538 octet frames, one need only process 8,127 packets per second.

"Line rate" is "fill the 100Mbit link with 100 million bits each second". Of course the overhead is included in that, since the overhead also goes over the wire

Re: Raspberry Pi Pico does line rate 100M Ethernet

#36
post #16

> Achieves 94.9 Mbit/sec when Pico is overclocked to 300 MHz, as measured by iperf Is this an effective rate, or just the reflection of a hardware limit?

A 1500 byte (octet) MTU frame is 1538 bytes “on the wire”.

7 byte preamble

1 byte SFD

6 byte dst MAC

6 byte src MAC

2 byte ethertype or length

46-1500 bytes of payload (ignoring “Jumbo” frames and 802.1q tags)

4 byte CRC

12 byte IFG (which is silence, but still counts for time on the wire)

Add it up and you have 1538 bytes “on the wire”.

TCP overhead for IPv4 is 20 bytes for IP(v4) (no options) and 20 bytes for TCP (again, no options).

So 1460 bytes of data for 1538 bytes on the wire. 1460/1538 = 0.949284

So for 100M Ethernet, 94.9284Mbps is “perfect”.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#37
post #33

“Line rate” is not “fill the link with TCP”. Line rate is “fill the link with 84 octet (including all overhead) frames.” For 100M Ethernet this requires 148,809 packets per second. Edit: for 1538 octet frames, one need only process 8,127 packets per second.

"Line rate" is "fill the 100Mbit link with 100 million bits each second". Of course the overhead is included in that, since the overhead also goes over the wire

This is a lazy definition and won’t get you past “Go” when making network equipment. Why not use 9000 byte “Jumbo” frames? You’ll only need to process 1,383 packets per second to fill the link!

Re: Raspberry Pi Pico does line rate 100M Ethernet

#38
post #33

“Line rate” is not “fill the link with TCP”. Line rate is “fill the link with 84 octet (including all overhead) frames.” For 100M Ethernet this requires 148,809 packets per second. Edit: for 1538 octet frames, one need only process 8,127 packets per second.

"Line rate" is "fill the 100Mbit link with 100 million bits each second". Of course the overhead is included in that, since the overhead also goes over the wire

Smallest packet line rate is usually the definition network engineers use when discussing performance of devices.

Re: Raspberry Pi Pico does line rate 100M Ethernet

#39
post #32

Usually I can grok the significance of almost any item on HN that catches my eye, but here I'm at a loss. Can someone explain why this matters? As far as I can tell, someone has figured out how to send Ethernet packets at a relatively high rate using hardware with very limited CPU. Cool, but what can you _do with that_? If the RPi Pico has the juice to run interesting network _application-level traffic_ at line rate…

Its quite popular in the retro-computing scene, for example, to bring these old machines into the 21st century with modern microcontrollers being used to add peripheral support.

For example, the Oric-1/Atmos computers recently got a project called "LOCI" which adds USB support to the 40-year old computer[1], by using an RP2040's PIO capabilities to interface the 8-bit DATA bus with a microcontroller capable of acting as the 'gateway' to all of the devices on the USB peripheral bus.

This is amazing, frankly.

And now, being able to do Ethernet in such a simple way means that hundreds of retro-computing platforms could be put on the Internet with relative ease ..

[1] - https://forum.defence-force.org/viewtopic.php?t=2593&sid=2d3...

Re: Raspberry Pi Pico does line rate 100M Ethernet

#40
post #37

Earlier quoted context omitted.

"Line rate" is "fill the 100Mbit link with 100 million bits each second". Of course the overhead is included in that, since the overhead also goes over the wire

This is a lazy definition and won’t get you past “Go” when making network equipment. Why not use 9000 byte “Jumbo” frames? You’ll only need to process 1,383 packets per second to fill the link!

That's actually what NAS vendors do.
Post reply on HN