anchor.diff:  
   [.text-center]
   .UDP / IPv4 / Ethernet II Frame Structure
  -image::udp/ethernet-ip-udp-header.png[link="../images/udp/ethernet-ip-udp-header.png"]
  +image::udp/ethernet-ip-udp-header.png[link="../images/udp/ethernet-ip-udp-header.png", width="100%"]
   
   Although this overhead may seem high for traditional automation applications with small payloads (<10 bytes), it quickly amortizes when communicating with smarter devices. For example, each one of our http://hebirobotics.com/products/[X-Series] actuators contains more than 40 sensors (position, velocity, torque, 3-axis gyroscope, 3-axis accelerometer, several temperature sensors, etc.) that get combined into a single packet that uses between 185 and 215 bytes payload. Typical feedback packets from an I/O Board are even larger and require about 300 bytes. When comparing overhead it is also important to consider the available bandwidth, i.e., sending 100 bytes over Gigabit Ethernet (even over 100 Mbit/s) tends to be faster than sending a single byte using traditional non-Ethernet based alternatives such as RS485 or CAN Bus.
   
  
positive.code: 
  [.text-center]
  .Baseline setup using single Switch
  image::udp/setup-baseline.png[link="../images/udp/setup-baseline.png"]
  
  We set the frequency to 100Hz and logged data for ~24 hours. We chose this frequency because it is a common control rate for sending high-level trajectories, and because 10ms is a safe deadline in case there are large outliers. During normal operations we typically used rates between 100-200Hz for updating set targets of controllers that get executed on-board each device (e.g. position/velocity/torque), and rates of up to 1KHz when bypassing local controllers and remotely controlling the output (e.g. PWM). The network would technically support even higher rates, but there are usually other limitations that come in at around 1KHz (e.g. OS scheduler and limited sensor polling rates).
  
  
negative.code: 
  [.text-center]
  .Benchmark setup with additional Switch
  image::udp/setup-switching-cost.png[link="../images/udp/setup-switching-cost.png", width="100%"]
  
  For this benchmark we tested the three following Switches and added them individually to the baseline setup as shown above,
  
  