anchor.diff:  [NOTE]
   TODO: Replace with a new picture that doesn't have a heater in the back?
   
  -This setup also benefits from two convenient side effects of using standard networking:
  +This setup also benefits from two convenient side effects of using a standard networking stack to communicate with robotic hardware:
   
   1. There is no need for any manual addressing because of https://en.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol[DHCP] and device specific globally unique mac addresses.
   
  
positive.code: 
  As mentioned in the intro, most modern switches use the 'store-and-forward' approach that requires the switch to fully receive a packet before forwarding it appropriately. Therefore, the latency cost per switch is the time it takes a packet on the wire plus any switching overhead. The wire time is constant (2.03us or 20.3us for 266 bytes), but the overhead depends on the switch implementation. There is not much 3rd party data out there, so depending on your requirements you may need to conduct your own benchmarks if you need to evaluate hardware.
  
  For this benchmark I tested three switches that were individually added to the baseline setup.
  
  [.text-center]
  .Switches added to the baseline setup
  
negative.code: 
  == Introduction
  
  Popular wisdom claims that Ethernet is non-deterministic and that UDP should not be used for real-time control. This post looks at the data to check whether popular wisdom is wrong.
  
  In theory, the User Datagram Protocol (UDP) is non-deterministic: packets may be lost, reordered, and could even be delayed by an arbitrarily long time. These shortcomings make standard UDP seem unreliable and a potentially bad choice for controlling real-time systems. However, we have found that modern network components have largely solved these issues and that performance in practice can be surprisingly good.
  
  Below we present results from a number of test and benchmarks, involving over XX million transmitted packets. *Over the course of all of our tests no packets were dropped or received out of order.*
  
  == Technical Background
  
  Much of this popular wisdom comes from the early days of networking. Devices used to communicate over a single shared media that used https://en.wikipedia.org/wiki/Carrier_sense_multiple_access_with_collision_detection[CSMA/CD]
  (carrier sense multiple access with collision detection) for arbitrating access. When two Frames collided during a transmission, the senders backed off for random timeouts and attempted to retransmit. After a number of failed attempts, frames could be dropped entirely.  By connecting more devices through https://en.wikipedia.org/wiki/Ethernet_hub[Hubs] the https://en.wikipedia.org/wiki/Collision_domain[Collision Domain] was extended further, resulting in more collisions and unpredictable behavior.
  