blob: a0bb2d451c02dc9eeb697ed3f46f6b75a8c9a7fa [file] [log] [blame]
John DeNisco06dcd452018-07-26 12:45:10 -04001.. _developer-friendly:
2
3==================
4Developer Friendly
5==================
6
7* Extensive runtime counters; throughput, `intructions per cycle <https://en.wikipedia.org/wiki/Instructions_per_cycle>`_, errors, events etc.
8* Integrated pipeline tracing facilities
9* Multi-language API bindings
10* Integrated command line for debugging
11* Fault-tolerant and upgradable
12
13 * Runs as a standard user-space process for fault tolerance, software crashes seldom require more than a process restart.
14 * Improved fault-tolerance and upgradability when compared to running similar packet processing in the kernel, software updates never require system reboots.
15 * Development expierence is easier compared to similar kernel code
16 * Hardware isolation and protection (`iommu <https://en.wikipedia.org/wiki/Input%E2%80%93output_memory_management_unit>`_)
17
18* Built for security
19
20 * Extensive white-box testing
21 * Image segment base address randomization
22 * Shared-memory segment base address randomization
23 * Stack bounds checking
24 * Static analysis with `Coverity <https://en.wikipedia.org/wiki/Coverity>`_